package com.itany.thread.test04;

public class Test {
	public static void main(String[] args) {
//		MyThreadLocal<String> local = new MyThreadLocal<String>();
		ThreadLocal<String> local = new ThreadLocal<String>();
		// 此处存在main线程
		// 此处为main线程中赋值了三次,三次的值都不一样
		// 即:在Map集合中存放了三个值
		// 这三个值的key都是当前的main线程
		// 由于Map集合中三个值的key相同
		// 后面的值会覆盖前面的值
		local.set("a1");
		System.out.println("主线程:"+local.get());
		local.set("a2");
		System.out.println("主线程:"+local.get());
		
		// 定义一个线程
		new Thread(){
			public void run() {
				// 由于此处开启一个新的线程
				// 那么在该线程中存放的Map数据的key与主线程不一致
				// 因此两者互不干涉
				local.set("b1");
				System.out.println("新的线程:"+local.get());
				local.set("b2");
				System.out.println("新的线程:"+local.get());
			};
		}.start();
		
		local.set("a3");
		// 此时取出的值永远是最后一次赋予的值
		System.out.println("主线程:"+local.get());
		
	}
}
